<?php
$db = Db::getInstance();
$db->autocommit(false);
$pdo = Db::getPDO();
$pdo->beginTransaction();
try {
	if(!Authenticate::isLogin()){
		throw new Exception('Need login for buy', 200);
	}
	if($_SERVER['REQUEST_METHOD'] == 'POST') {
        $account = Account::instance()->getOne(Authenticate::getId());
        if($_POST['profile']=='me'){
            $name = trim($account['name']);
            $address = trim($account['address']);
            $phone = trim($account['phone']);
            $set = array();
            if(empty($name)){
                $sName = trim($_POST['me']['name']);
                if(empty($sName))
                    throw new Exception('กรุณาใส่ชื่อด้วยค่ะ');
                $set['name'] = $sName;
            }
            if(empty($address)){
                $sAddress = trim($_POST['me']['address']);
                if(empty($sAddress))
                    throw new Exception('กรุณาใส่ชื่อด้วยค่ะ');
                $set['address'] = $sAddress;
            }
            if(empty($phone)){
                $sPhone = trim($_POST['me']['phone']);
                if(empty($sPhone))
                    throw new Exception('กรุณาใส่ชื่อด้วยค่ะ');
                $set['phone'] = $sPhone;
            }
            if(count($set)>0){
                Account::instance()->edit($account['id'], $set);
            }
            $profileId = null;
            $profileType='account';
        }
        else {
            $st = $pdo->prepare("INSERT INTO Profile(name, address, phone) VALUES(:name, :address, :phone)");
            $st->execute(array(
                'name'=> $_POST['other']['name'],
                'address'=> $_POST['other']['address'],
                'phone'=> $_POST['other']['phone']));
            $profileId = $pdo->lastInsertId();
            $profileType = 'other';
        }
        $sessionBuy = $_SESSION['confirmBuyCode'][$_POST['confirmCode']];
        $package = $sessionBuy['package'];
        $price = $sessionBuy['price'];

        $st = $pdo->prepare("INSERT INTO Invoice(type,accountId,packageId,price,month,info,dateDue,isNew,profileType,profileId)
            VALUES (:type, :accountId, :packageId, :price, :month, :info, :dateDue, :isNew, :profileType, :profileId)");
        $st->execute(array(
            'type'=> $package['type'],
            'accountId'=> Authenticate::getId(),
            'packageId'=> $package['id'],
            'price'=> $sessionBuy['price']['price'],
            'month'=> $sessionBuy['price']['month'],
            'info'=> $sessionBuy['info'],
            'dateDue'=> $sessionBuy['dateDue'],
            'isNew'=> 1,
            'profileType'=> $profileType,
            'profileId'=> $profileId,
        ));
        $id = $pdo->lastInsertId();
        switch ($package['type']) {
            case 'colo':
                $st = $pdo->prepare("INSERT INTO InvoiceColo(id,net,os,admin) VALUES(:id,0,0,0)");
                $st->execute(array('id'=> $id));
                break;
            case 'vps':
                $st = $pdo->prepare("INSERT INTO InvoiceVPS(id,os) VALUES(:id,:os)");
                $st->execute(array('id'=> $id, 'os'=> $sessionBuy['os']));
                break;
            case 'hosting':
                $st = $pdo->prepare("INSERT INTO InvoiceHosting(id,domain,serverName) VALUES(:id,:domain,'')");
                $st->execute(array('id'=> $id, 'domain'=> $sessionBuy['domain']));
                break;
        }

        $invoice = array(
            'id'=> $id,
            'month'=> $sessionBuy['price']['month'],
        );
        $dateDue = new DateTime($sessionBuy['dateDue']);
        $dateDue = $dateDue->format('j/n/Y');
        $money = Helper::formatMoney($sessionBuy['price']['price']);
		$mailMessage = <<<HTML
<p>
P2DC ขอขอบคุณที่เลือกใช้บริการกับเรา และหวังเป็นอย่างยิ่งว่าจะได้รับความพึงพอใจจากท่าน<br />
ขณะนี้ข้อมูลการสั่งซื้อบริการได้ถูกเก็บในระบบแล้ว
</p>
<table cellspacing="0" cellpadding="10" border="1">
	<thead bgcolor="blue" style="color: white;  background-color: blue;">
		<tr>
			<th>invoice id</th>
			<th>package</th>
			<th>ระยะเวลา</th>
			<th>ชำระไม่เกินวันที่</th>
			<th>จำนวนเงิน</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>{$invoice['id']}</td>
			<td>{$package['type']}<br />{$package['name']}</td>
			<td>{$invoice['month']}</td>
			<td>{$dateDue}</td>
			<td>{$money} บาท</td>
		</tr>
	</tbody>
</table>
<div style="text-align: center;"><a href="http://p2dc.com?page=invoice&id={$id}"><button>ดูข้อมูลการสั่งซื้อ</button></a></div>
<p>โดยท่านสามารถชำระค่าบริการผ่านทางช่องทางต่อไปนี้</p>
<table cellspacing="0" cellpadding="10" border="1">
	<thead bgcolor="blue" style="color: white; background-color: blue;">
		<tr>
			<th>ธนาคาร</th>
			<th>ชื่บัญชี</th>
			<th>เลขที่บัญชี</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>ธนาคารกสิกรไทย สาขานิมมานเหมินทร์ เชียงใหม่</td>
			<td>บริษัท ปลาทูฟิวชั่น จำกัด</td>
			<td>511-2-10801-9</td>
		</tr>
		<tr>
			<td>ธนาคารไทยพาณิชย์ สาขากาดสวนแก้ว เชียงใหม่</td>
			<td>บริษัท ปลาทูฟิวชั่น จำกัด</td>
			<td>868-2-17749-1</td>
		</tr>
		<tr>
			<td>ธนาคารกรุงเทพ สาขากาดสวนแก้ว เชียงใหม่</td>
			<td>บริษัท ปลาทูฟิวชั่น จำกัด</td>
			<td>531-0-74527-7</td>
		</tr>
	</tbody>
</table>
<div style="text-align: center;"><a href="http://p2dc.com/old.php?page=payment&invoiceId={$id}"><button>แจ้งโอนเงิน</button></a></div>

<p>หากต้องการเปลี่ยน Package หรือแจ้งปัญหารการใช้งานหรือสอบถามเพิ่มเติม กรุณาติดต่อ</p>

<p>
facebook fanpage : <a href="http://facebook.com/pla2dc">facebook.com/pla2dc</a><br />
skype ID : pla2dc<br />
อีเมล์ : pla2dc@gmail.com<br />
โทรศัพท์ : 087-787-6960<br />
</p>

<p>เวลาทำการ : จันทร์ – เสาร์ เวลา 10.00 - 17.00 น.</p>

<p>
ขอแสดงความนับถือ<br />
Pla2 Data Center Chiang mai<br />
บริษัท ปลาทูฟิวชั่น จำกัด<br />
</p>
HTML;
		Notify::mailService($account['email'], "ได้ทำการสั่งซื้อ package", $mailMessage);
		unset($_SESSION['confirmBuyCode']);
		$db->commit();
        $pdo->commit();
		//Helper::redir(array('page'=>'recommend.payment', 'invoiceId'=> $id), 0);
		header("Location: old.php?page=recommend.payment&invoiceId={$id}");
	}
	else {
		Helper::redir('home');
	}
} catch (Exception $ex){
	$db->rollback();
    $pdo->rollBack();
	if($ex->getCode() == 200){
		if(isset($sessionBuy['package']['id']))
			Helper::redir(array('page'=>'buyPackage', 'id'=> $sessionBuy['package']['id']), 0);
		else
			Helper::redir(array('page'=>'home'), 0);
	}
	else{
		View::display('error', array('message' => $ex->getMessage()));
		throw $ex;
	}
}